#include <stdio.h>
#include <setjmp.h>
#include <signal.h>

jmp_buf position;

main()
{
    int goback();

    printf("setjmp start\n");

    // 保存当前的堆栈环境
    setjmp(position);

    signal(SIGINT, goback); // 用户可以手动输入中断信号

    sleep(10);

    printf("return to main\n");

    // domenu();
}

goback()
{
    fprintf(stderr, "\nAInterrupted\n");
    printf("goback\n");
    longjmp(position, 1); // 跳回被保存的断点
}